import UIKit

@available(iOS 2.0, *)
extension QKC where AA :UINavigationItem {
		// Title when topmost on the stack. default is nil
    open func title_qk_s(_ title:  String? ) -> QKC<AA,YY,ZZ, String? >{
		return link(next: title).then_QK { $0.value.title = title }
	}
    open func title_qk_g() -> QKC<AA,YY,ZZ, String? >{
		 self +^ self.value.title
	}

		// Custom view to use in lieu of a title. May be sized horizontally. Only used when item is topmost on the stack.
    open func titleView_qk_s(_ titleView:  UIView? ) -> QKC<AA,YY,ZZ, UIView? >{
		return link(next: titleView).then_QK { $0.value.titleView = titleView }
	}
    open func titleView_qk_g() -> QKC<AA,YY,ZZ, UIView? >{
		 self +^ self.value.titleView
	}

		// Explanatory text to display above the navigation bar buttons.
    open func prompt_qk_s(_ prompt:  String? ) -> QKC<AA,YY,ZZ, String? >{
		return link(next: prompt).then_QK { $0.value.prompt = prompt }
	}
    open func prompt_qk_g() -> QKC<AA,YY,ZZ, String? >{
		 self +^ self.value.prompt
	}

		// Bar button item to use for the back button in the child navigation item.
    open func backBarButtonItem_qk_s(_ backBarButtonItem:  UIBarButtonItem? ) -> QKC<AA,YY,ZZ, UIBarButtonItem? >{
		return link(next: backBarButtonItem).then_QK { $0.value.backBarButtonItem = backBarButtonItem }
	}
    open func backBarButtonItem_qk_g() -> QKC<AA,YY,ZZ, UIBarButtonItem? >{
		 self +^ self.value.backBarButtonItem
	}

		// If YES, this navigation item will hide the back button when it's on top of the stack.
    open func hidesBackButton_qk_s(_ hidesBackButton:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: hidesBackButton).then_QK { $0.value.hidesBackButton = hidesBackButton }
	}
    open func hidesBackButton_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.hidesBackButton
	}

    @available(iOS 5.0, *)
    open func leftBarButtonItems_qk_s(_ leftBarButtonItems:  [UIBarButtonItem]?) -> QKC<AA,YY,ZZ, [UIBarButtonItem]?>{
		return link(next: leftBarButtonItems).then_QK { $0.value.leftBarButtonItems = leftBarButtonItems }
	}
    @available(iOS 5.0, *)
    open func leftBarButtonItems_qk_g() -> QKC<AA,YY,ZZ, [UIBarButtonItem]?>{
		 self +^ self.value.leftBarButtonItems
	}

    @available(iOS 5.0, *)
    open func rightBarButtonItems_qk_s(_ rightBarButtonItems:  [UIBarButtonItem]?) -> QKC<AA,YY,ZZ, [UIBarButtonItem]?>{
		return link(next: rightBarButtonItems).then_QK { $0.value.rightBarButtonItems = rightBarButtonItems }
	}
    @available(iOS 5.0, *)
    open func rightBarButtonItems_qk_g() -> QKC<AA,YY,ZZ, [UIBarButtonItem]?>{
		 self +^ self.value.rightBarButtonItems
	}

    @available(iOS 5.0, *)
    open func leftItemsSupplementBackButton_qk_s(_ leftItemsSupplementBackButton:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: leftItemsSupplementBackButton).then_QK { $0.value.leftItemsSupplementBackButton = leftItemsSupplementBackButton }
	}
    @available(iOS 5.0, *)
    open func leftItemsSupplementBackButton_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.leftItemsSupplementBackButton
	}

	// A custom left item replaces the regular back button unless you set leftItemsSupplementBackButton to YES
    open func leftBarButtonItem_qk_s(_ leftBarButtonItem:  UIBarButtonItem?) -> QKC<AA,YY,ZZ, UIBarButtonItem?>{
		return link(next: leftBarButtonItem).then_QK { $0.value.leftBarButtonItem = leftBarButtonItem }
	}
    open func leftBarButtonItem_qk_g() -> QKC<AA,YY,ZZ, UIBarButtonItem?>{
		 self +^ self.value.leftBarButtonItem
	}

    open func rightBarButtonItem_qk_s(_ rightBarButtonItem:  UIBarButtonItem?) -> QKC<AA,YY,ZZ, UIBarButtonItem?>{
		return link(next: rightBarButtonItem).then_QK { $0.value.rightBarButtonItem = rightBarButtonItem }
	}
    open func rightBarButtonItem_qk_g() -> QKC<AA,YY,ZZ, UIBarButtonItem?>{
		 self +^ self.value.rightBarButtonItem
	}

	/// When UINavigationBar.prefersLargeTitles=YES, this property controls when the larger out-of-line title is displayed. If prefersLargeTitles=NO, this property has no effect. The default value is Automatic.
    @available(iOS 11.0, *)
    open func largeTitleDisplayMode_qk_s(_ largeTitleDisplayMode:  UINavigationItem.LargeTitleDisplayMode) -> QKC<AA,YY,ZZ, UINavigationItem.LargeTitleDisplayMode>{
		return link(next: largeTitleDisplayMode).then_QK { $0.value.largeTitleDisplayMode = largeTitleDisplayMode }
	}
    @available(iOS 11.0, *)
    open func largeTitleDisplayMode_qk_g() -> QKC<AA,YY,ZZ, UINavigationItem.LargeTitleDisplayMode>{
		 self +^ self.value.largeTitleDisplayMode
	}

	// A view controller that will be shown inside of a navigation controller can assign a UISearchController to this property to display the search controller’s search bar in its containing navigation controller’s navigation bar.
    @available(iOS 11.0, *)
    open func searchController_qk_s(_ searchController:  UISearchController?) -> QKC<AA,YY,ZZ, UISearchController?>{
		return link(next: searchController).then_QK { $0.value.searchController = searchController }
	}
    @available(iOS 11.0, *)
    open func searchController_qk_g() -> QKC<AA,YY,ZZ, UISearchController?>{
		 self +^ self.value.searchController
	}

	// If this property is true (the default), the searchController’s search bar will hide as the user scrolls in the top view controller’s scroll view. If false, the search bar will remain visible and pinned underneath the navigation bar.
    @available(iOS 11.0, *)
    open func hidesSearchBarWhenScrolling_qk_s(_ hidesSearchBarWhenScrolling:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: hidesSearchBarWhenScrolling).then_QK { $0.value.hidesSearchBarWhenScrolling = hidesSearchBarWhenScrolling }
	}
    @available(iOS 11.0, *)
    open func hidesSearchBarWhenScrolling_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.hidesSearchBarWhenScrolling
	}

	///  When set and this item is topmost, overrides the hosting navigation bar's standardAppearance. See UINavigationBar.standardAppearance for further details.
    @available(iOS 13.0, *)
     open func standardAppearance_qk_s(_ standardAppearance:  UINavigationBarAppearance?) -> QKC<AA,YY,ZZ, UINavigationBarAppearance?>{
		return link(next: standardAppearance).then_QK { $0.value.standardAppearance = standardAppearance }
	}
    @available(iOS 13.0, *)
     open func standardAppearance_qk_g() -> QKC<AA,YY,ZZ, UINavigationBarAppearance?>{
		 self +^ self.value.standardAppearance
	}

	///  When set and this item is topmost, overrides the hosting navigation bar's compactAppearance. See UINavigationBar.compactAppearance for further details.
    @available(iOS 13.0, *)
     open func compactAppearance_qk_s(_ compactAppearance:  UINavigationBarAppearance?) -> QKC<AA,YY,ZZ, UINavigationBarAppearance?>{
		return link(next: compactAppearance).then_QK { $0.value.compactAppearance = compactAppearance }
	}
    @available(iOS 13.0, *)
     open func compactAppearance_qk_g() -> QKC<AA,YY,ZZ, UINavigationBarAppearance?>{
		 self +^ self.value.compactAppearance
	}

	///  When set and this item is topmost, overrides the hosting navigation bar's scrollEdgeAppearance. See UINavigationBar.scrollEdgeAppearance for further details.
    @available(iOS 13.0, *)
     open func scrollEdgeAppearance_qk_s(_ scrollEdgeAppearance:  UINavigationBarAppearance?) -> QKC<AA,YY,ZZ, UINavigationBarAppearance?>{
		return link(next: scrollEdgeAppearance).then_QK { $0.value.scrollEdgeAppearance = scrollEdgeAppearance }
	}
    @available(iOS 13.0, *)
     open func scrollEdgeAppearance_qk_g() -> QKC<AA,YY,ZZ, UINavigationBarAppearance?>{
		 self +^ self.value.scrollEdgeAppearance
	}

    open func setHidesBackButton_qk_f(_ hidesBackButton: Bool, animated: Bool) -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.setHidesBackButton(hidesBackButton, animated:animated) +^ hidesBackButton
	}

    @available(iOS 5.0, *)
    open func setLeftBarButtonItems_qk_f(_ items: [UIBarButtonItem]?, animated: Bool) -> QKC<AA,YY,ZZ, [UIBarButtonItem]?>{
		 self +^ self.value.setLeftBarButtonItems(items, animated:animated) +^ items
	}

    @available(iOS 5.0, *)
    open func setRightBarButtonItems_qk_f(_ items: [UIBarButtonItem]?, animated: Bool) -> QKC<AA,YY,ZZ, [UIBarButtonItem]?>{
		 self +^ self.value.setRightBarButtonItems(items, animated:animated) +^ items
	}

    open func setLeftBarButton_qk_f(_ item: UIBarButtonItem?, animated: Bool) -> QKC<AA,YY,ZZ, UIBarButtonItem?>{
		 self +^ self.value.setLeftBarButton(item, animated:animated) +^ item
	}

    open func setRightBarButton_qk_f(_ item: UIBarButtonItem?, animated: Bool) -> QKC<AA,YY,ZZ, UIBarButtonItem?>{
		 self +^ self.value.setRightBarButton(item, animated:animated) +^ item
	}

}

